perm filename MOVE.OLD[XX,LCS]1 blob
sn#206581 filedate 1976-05-31 generic text, type T, neo UTF8
00100 TITLE MOVE
00200 ENTRY GETPTS,MOVIT,OUTLIM,COPYIT,UPDN,STFCH,DELETE,NOIR
00300 ENTRY SLEND,POSIT
00400 EXTERNAL LOOP,RTLINE,DL,DPY,DPYNEW,.COMM.,XRN,KJY,PTR,POSI
00500 EXTERNAL SCM,AMOD
00600
00700 K←15↔J←14↔ M←2↔ R2←5↔ X←6↔ L←4↔ R←7↔ A←11↔RY←3↔RZ←13↔JJ2←12
00800 DEFINE FIXX(N)
00900 < JUMPGE N,.+5
01000 MOVNS N
01100 FIX N,233000
01200 MOVNS N
01300 CAIA
01400 FIX N,233000 > ; TO FIX IT LIKE 'IFIX' DOES.
01500
01600 ; SUBROUTINE GETPTS
01700 ; DIMENSION N(500),NP(500)
01800 ; COMMON/XRN/RN(4000) /KJY/ K,J
01900 ; COMMON R2,JA,CENTR,J2,RJQ(18),RX6,JR,L,RDIS,VY,JQ(17)
02000 ; 1/PTR/PWDS(250),ITEM,LL,I,IX
02100 ; EQUIVALENCE (R4,RJQ(2)),(R5,RJQ(3)),(R11,RJQ(9))
02200 ; 1,(R6,RJQ(4)),(N,RN(2500)),(NP,RN(3000))
02300
02400 GETPTS: 0 ;CALL GETPTS(N)
02500 SETZ J, ; J=0
02600 SETZ K, ; K=0
02700 MOVE JJ2,POSI+=8
02800 MOVE R2,.COMM.
02900 ;; SETZ X,
03000 MOVE X,@(16)
03100 SOS X
03200 MOVEI M,PTR ; DO 1 M=1,ITEM
03300 ADDI M,(X)
03400 G1: AOJ X,
03500 MOVE L,(M)
03600 ;; FIXX(L)
03700 MOVEI R,XRN(L) ;L=PWDS(M)
03800 ;; ADDI R,(L) ;IF(RTLINE(L))GO TO 1
03900 MOVE 1,1(R) ;RN(L+2)
04000 CAML R2,[=5.0]
04100 JRST GZ
04200 CAME R2,1
04300 JRST GX
04400 GZ: MOVE A,.COMM.+7 ;RY=RN(L+1)
04500 JUMPLE A,G9 ;F(R6.LE.0)GO TO 9
04600 CAME A,(R)
04700 JRST GX
04800 ; CHECK CODE NUM
04900 G9: MOVE A,2(R) ;IF(R6.NE.RY)GO TO 1
05000 CAMLE A,.COMM.+6
05100 JRST G2 ;9 IF(OUTLIM(R4,R5,RN(L+3)))GO TO 2
05200 CAMGE A,.COMM.+5 ;R4
05300 JRST G2
05400
05500 ;; SKIPG JJ2
05600 CAMLE JJ2,X
05700 MOVE JJ2,X ;IF(M.LT.JJ2)JJ2=M
05800 AOJ J,
05900 ; IN LIMITS?
06000 MOVEI A,XRN+=2498(J) ;J=J+1
06100 ;; ADDI A,(J)
06200 MOVEI 0,(L)
06300 AOJ K, ;K=K+1
06400 MOVEI 1,XRN+=2998(K)
06500 ;; ADDI 1,(K) ;NP(K)=L
06600 MOVEM 0,(1)
06700 ADDI 0,3 ;N(J)=L+3
06800 ;; MOVEM 0,(A)
06900 MOVEM 0,XRN+=2498(J)
07000 ; NP IS FOR USE IN JUSTIFY ROUTINE
07100 G2: MOVE RY,(R) ;2 IF(RY.LT.4)GO TO 1
07200 CAMGE RY,[=4.0]
07300 JRST GX
07400 CAMLE RY,[=7.0]
07500 JRST GX ;IF(RY.GT.7)GO TO 1
07600 ; TWO-ENDED ITEM?
07700 MOVE RZ,-1(R) ;RZ=RN(L)
07800 ; WD CNT
07900 ;; CAMN RY,[=4.0] ;GO TO(4,5,6,7),IFIX(RY)-3
08000 ;; JRST G4
08100 ;; CAMN RY,[=5.0]
08200 ;; JRST G5
08300 ;; CAMN RY,[=6.0]
08400 ;; JRST G6
08500 ;; CAMG RZ,[=4.0] ;4 IF(RZ.GT.2)GO TO 5
08600 ;; JRST G5 ; THERE IS A TRILL WIGGLE
08700 ;; JRST GX ;GO TO 1 -- NO WIGGLE (P7≠0)
08800 FIXX(RY)
08900 XCT TBL-4(RY) ; NEXT REPLACES THE ABOVE.
09000 JRST G5
09100 JRST GX
09200 TBL: JRST G4
09300 JRST G5
09400 JRST G6
09500 CAMG RZ,[4.0]
09600
09700 G4: CAMG RZ,[=2.0] ;7 IF(RZ.GT.3)GO TO 5
09800 JRST GX
09900 JRST G5 ;GO TO 1
10000 G6: CAMGE RZ,[=8.0] ;6 IF(RZ.LT.8)GO TO 8
10100 JRST G8
10200 ;; MOVEI 1,XRN ;IF(RN(L+10).LT.30)GO TO 8
10300 ;; ADDI 1,(L)
10400 ;; MOVE 1,11(1)
10500 MOVE 1,=9(R)
10600 CAMGE 1,[=30.0]
10700 JRST G8
10800 MOVE A,7(R) ; IF(OUTLIM(R4,R5,RN(L+8)))GO TO 8
10900 CAMLE A,.COMM.+6
11000 JRST G8
11100 CAMGE A,.COMM.+5
11200 JRST G8
11300 ;; SKIPG JJ2
11400 CAMLE JJ2,X
11500 MOVE JJ2,X
11600 AOJ J,
11700 ; IN LIMITS?
11800 ;; MOVEI A,XRN+=2498(J) ;J=J+1
11900 ;; ADDI A,(J)
12000 MOVEI 0,=8(L) ;J=J+1
12100 ;; ADDI 0,=8 ;N(J)=L+8
12200 ;; MOVEM 0,(A)
12300 MOVEM 0,XRN+=2498(J)
12400 G8: CAMGE RZ,[=7.0] ;8 IF(RZ.LT.7)GO TO 5
12500 JRST G5
12600 ;; MOVE A,6(R) ;IF(RN(L+7))GO TO G8B
12700 ;; JUMPL A,G8B ; P7 IS NEG FOR TREMOLO
12800 ;; MOVE A,7(R) ;IF(RN(L+8).NE.0)GO TO G8B
12900 ;; JUMPN A,G8B
13000 SKIPL 6(R)
13100 SKIPE 7(R)
13200 JRST G8B
13300
13400 CAMGE RZ,[=8.0]
13500 JRST G5 ;IF(RZ.LT.8)GO TO G5
13600 MOVE A,=9(R) ;IF(RN(L+10).EQ.0)GO TO G5
13700 JUMPE A,G5 ;PASSES NUMBER OVER BEAM.
13800 G8B: MOVE A,8(R)
13900 CAMLE A,.COMM.+6
14000 JRST G5
14100 CAMGE A,.COMM.+5 ;R4
14200 JRST G5
14300
14400 ;; SKIPG JJ2
14500 CAMLE JJ2,X
14600 MOVE JJ2,X
14700 AOJ J, ;J=J+1
14800 ; IN LIMITS?
14900 ;; MOVEI A,XRN+=2498(J) ;J=J+1
15000 ;; ADDI A,(J)
15100 MOVEI 0,=9(L)
15200 ;; ADDI 0,=9 ;IF(OUTLIM(R4,R5,RN(L+9)))GO TO 5
15300 ;; MOVEM 0,(A) ;N(J)=L+9
15400 MOVEM 0,XRN+=2498(J)
15500 G5: MOVE A,5(R)
15600 CAMLE A,.COMM.+6
15700 JRST GX
15800 CAMGE A,.COMM.+5 ;R4
15900 JRST GX
16000
16100 ;; SKIPG JJ2
16200 CAMLE JJ2,X
16300 MOVE JJ2,X
16400 AOJ J,
16500 ; IN LIMITS?
16600 ;; MOVEI A,XRN+=2498(J) ;J=J+1
16700 ;; ADDI A,(J)
16800 MOVEI 0,6(L) ;5 IF(OUTLIM(R4,R5,RN(L+6)))GO TO 1
16900 ;; ADDI 0,6 ;N(J)=L+6
17000 ;; MOVEM 0,(A)
17100 MOVEM 0,XRN+=2498(J)
17200 GX: CAMGE X,PTR+=250 ;1 CONTINUE
17300 AOJA M,G1
17400 MOVEM JJ2,POSI+=8
17500 MOVEM J,KJY+1
17600 MOVEM K,KJY
17700 JRA 16,1(16)
17800
17900 ; SUBROUTINE MOVIT
18000 ; DIMENSION N(500)
18100 ; COMMON/XRN/RN(4000) /KJY/ DONT,J
18200 ; COMMON R2,JA,CENTR,J2,RJQ(18),RX6,JR,L,RDIS,VY,JQ(17)
18300 ; EQUIVALENCE (R4,RJQ(2)),(R5,RJQ(3)),(R9,RJQ(7))
18400 ; 1,(R6,RJQ(4)),(N,RN(2500)),(R8,RJQ(6))
18500 MOVIT: 0 ;RDIS=(R9-R8)/(R5-R4)
18600 MOVE R,.COMM.+=10
18700 FSBR R,.COMM.+=9
18800 MOVE RY,.COMM.+6
18900 FSBR RY,.COMM.+5
19000 FDVR R,RY
19100 MOVEI L,XRN+=2499 ; DO 1 K=1,J
19200 SETZ K,
19300 MOVE 0,.COMM.+=10 ; SET UP R9
19400 M1: MOVE X,L ; L=N(K)
19500 MOVE A,(X)
19600 MOVEI R2,XRN(A) ;RA=RN(L)
19700 ;; ADDI R2,(A)
19800 MOVEI RZ,(R2)
19900 MOVE R2,-1(R2)
20000 CAMGE R2,.COMM.+5 ;IF(OUTLIM(R4,R5,RA))GO TO 1
20100 JRST MX
20200 CAMLE R2,.COMM.+6
20300 JRST MX
20400 JUMPE 0,M2 ;IF(R9.NE.0)RA=(RA-R4)*RDIS
20500 FSBR R2,.COMM.+5
20600 FMPR R2,R
20700 M2: FADR R2,.COMM.+=9 ; RN(L)=R8+RA
20800 MOVEM R2,-1(RZ)
20900 MX: AOJ K, ;1 CONTINUE
21000 CAMGE K,KJY+1
21100 AOJA L,M1
21200 JRA 16,(16)
21300
21400 OUTLIM: 0 ; FUNCTION OUTLIM(I,J)
21500 SETO 0, ; OUTLIM=-1
21600 ;; MOVE 4,.COMM.+5 ; IF(RN(I+J).LT.R4)RETURN
21700 ;; MOVEI 2,XRN
21800 MOVE 2,@(16)
21900 ADD 2,@1(16)
22000 MOVE 2,XRN-1(2)
22100 ;; CAMLE 4,-1(2)
22200 CAMGE 2,.COMM.+5
22300 JRA 16,2(16)
22400 ;; MOVE 5,.COMM.+6 ; IF(RN(I+J).GT.R5)RETURN
22500 ;; CAMGE 5,-1(2)
22600 CAMG 2,.COMM.+6
22700 ;; JRA 16,2(16)
22800 SETZ 0, ; OUTLIM=0
22900 JRA 16,2(16)
23000
23100
23200 ;***** COPYIT
23300 ;; TITLE COPYIT
23400 ; SUBROUTINE COPYIT
23500 ; COMMON/XRN/RN(4000) /KJY/ DONT,JY /POSI/S(8),JJ2,P
23600 ; COMMON R2,JA,CENTR,J2,RJQ(18),RX6,JR,L,RDIS,VY,JQ(17)
23700 ; 1/PTR/PWDS(250),ITEM,LL,I,IX
23800 ; EQUIVALENCE (R4,RJQ(2)),(R5,RJQ(3)),(R7,RJQ(5))
23900 ; 1,(R6,RJQ(4)),(N,RN(2500))
24000 STFCH: 0
24100 SETO 13, ;FLAG FOR STFCH ROUTINE
24200 JRST .+3
24300
24400 COPYIT: 0
24500 SETZ 13, ;MAKE SURE IT'S 0
24600 SETZ 7, ;IM=ITEM
24700 MOVE 15,PTR+=250 ; AC7 IS K-1
24800 SOJ 15, ;(ITEM-1)
24900 CP1: JSA 16,RTLINE ;DO 1 K=1,IM
25000 JUMP PTR(7) ;L=PWDS(K)
25100 JUMPL CPY ; IF(RTLINE(L))GO TO 1
25200 JSA 16,OUTLIM ;IF(OUTLIM(L,3))GO TO 1
25300 JUMP PTR(7)
25400 JUMP [3]
25500 JUMPL CPY
25600 MOVE 11,PTR(7) ; NOW L IS AC11
25700 MOVE 10,.COMM.+7 ;IF(R6.NE.0.AND.R6.NE.RN(L+1))GO TO 1
25800 JUMPE 10,CP3
25900 CAME 10,XRN(11)
26000 JRST CPY
26100 CP3: JUMPL 13,STF2 ; SKIP OVER FOR STFCH ROUTINE
26200 MOVE 12,XRN-1(11)
26300 FIXX(12) ;M=RN(L)+2
26400 ADDI 12,2
26500 JSA 16,LOOP ;CALL LOOP(0,M,1,I,L,RN)
26600 JUMP [0]
26700 JUMP 12
26800 JUMP [1]
26900 JUMP PTR+=252
27000 JUMP 11
27100 JUMP XRN
27200 AOS PTR+=250 ;ITEM=ITEM+1
27300 MOVE 13,PTR+=250
27400 MOVE 11,PTR-1(13) ;L=PWDS(ITEM)
27500 STF2: MOVE 14,.COMM.+=8 ;RN(L+2)=R7
27600 MOVEM 14,XRN+1(11)
27700 JUMPGE 13,CP2
27800 ;; SKIPL POSI+=8 ;THIS FOR STFCH
27900 MOVE 0,7
28000 AOJ
28100 CAMGE POSI+=8
28200 MOVEM POSI+=8 ; IF(K.LT.JJ2)JJ2=K
28300 JRST CPY
28400 ;; MOVE 14,7
28500 ;; AOJ 14,
28600 ;; MOVEM 14,POSI+=8
28700 ;; JRST CPY
28800 ;;CP2: SKIPGE POSI+=8 ;IF(JJ2)JJ2=ITEM
28900 CP2: CAMGE 13,POSI+=8 ;IF(ITEM.LT.JJ2)JJ2=ITEM
29000 MOVEM 13,POSI+=8
29100 AOJ 12, ;I=I+M+1
29200 ADD 12,PTR+=252
29300 MOVEM 12,PTR+=252
29400 MOVEM 12,PTR(13) ;PWDS(ITEM+1)=I
29500 CPY: CAMGE 7,15 ;1 CONTINUE
29600 AOJA 7,CP1
29700 ;; JRST CP1
29800 JUMPL 13,.+3
29900 MOVE 7,.COMM.+=8 ;R2=R7
30000 MOVEM 7,.COMM. ;DOES THIS MATTER FOR STFCH⎇
30100 JRA 16,(16) ;END
30200
30300 ;SUBROUTINE STFCH
30400 ;INTEGER PWDS
30500 ;COMMON/XRN/RN(4000) /KJY/ DONT,JY /POSI/S(8),JJ2,P
30600 ;COMMON R2,JA,CENTR,J2,RJQ(18),RX6,JR,L,RDIS,VY,JQ(17)
30700 ;1/PTR/PWDS(250),ITEM,LL,I,IX
30800 ;EQUIVALENCE (R7,RJQ(5)),(R6,RJQ(4))
30900 ;DO 1 K=1,ITEM
31000 ;L=PWDS(K)
31100 ;IF(RTLINE(L))GO TO 1
31200 ;IF(OUTLIM(L,3))GO TO 1
31300 ;IF(RN(L+1).NE.R6.AND.R6.NE.0)GO TO 1
31400 ;C DIDN'T MATCH THE CODE NUM.
31500 ;IF(JJ2)JJ2=K
31600 ;RN(L+2)=R7
31700 ;1 CONTINUE
31800 ;END
31900
32000 UPDN: 0 ;SUBROUTINE UPDN(NST)
32100 ;INTEGER PWDS
32200 ;COMMON/XRN/RN(4000) /KJY/ DONT,JY /POSI/S(8),JJ2,P
32300 ;COMMON R2,JA,CENTR,J2,RJQ(18),RX6,JR,L,RDIS,VY,JQ(17)
32400 ;1/PTR/PWDS(250),ITEM,LL,I,IX
32500 MOVE 7,@(16) ;EQUIVALENCE (R4,RJQ(2)),(R5,RJQ(3)),(R11,RJQ(9))
32600 SOJ 7, ;1,(R6,RJQ(4))
32700 MOVE 15,PTR+=250 ; AC7 IS K-1
32800 SOJ 15, ;(ITEM-1)
32900 UPDN0: JSA 16,RTLINE ;DO 1 K=NST,ITEM
33000 JUMP PTR(7) ;L=PWDS(K)
33100 JUMPL UPDN1 ; IF(RTLINE(L))GO TO 1
33200 MOVE 11,PTR(7) ;RY=RN(L+1) -- 11 IS L
33300 MOVE 12,XRN(11) ;IF(RY.GT.16)GO TO 1
33400 CAMG 12,[16.0] ; AC12=RY
33500 CAME 12,[8.0] ;IF(RY.EQ.8)GO TO 1
33600 CAMN 12,[3.0] ;IF(RY.EQ.3)GO TO 1
33700 JRST UPDN1
33800 CAMN 12,.COMM.+7 ;IF(RY.EQ.R6)GO TO 10
33900 JRST UPDN10
34000 SKIPE .COMM.+7 ;IF(R6.NE.0)GO TO 1
34100 JRST UPDN1
34200 UPDN10: CAME 12,[4.0] ; DIDN'T MATCH THE CODE NUM.
34300 JRST UPDN11 ;10 ;IF(RY.NE.4)GO TO 11
34400 MOVE 2,XRN-1(11) ;IF(RN(L).LT.3)GO TO 1
34500 CAMGE 2,[3.0]
34600 JRST UPDN1 ; A BAR LINE
34700 UPDN11: JSA 16,OUTLIM ;11 IF(OUTLIM(L,3))GO TO 2
34800 JUMP PTR(7)
34900 JUMP [3]
35000 JUMPL UPDN2
35100 MOVE 2,.COMM.+=12 ;RN(L+4)=RN(L+4)+R11
35200 FADRM 2,XRN+3(11)
35300 ;; SKIPL POSI+=8 ;IF(JJ2)JJ2=K
35400 MOVE 0,7
35500 AOJ
35600 CAMGE POSI+=8
35700 MOVEM POSI+=8 ;IF(K.LT.JJ2)JJ2=K
35800 ;; JRST UPDN2
35900 ;; MOVE 2,7
36000 ;; AOJ 2,
36100 ;; MOVEM 2,POSI+=8
36200 UPDN2: CAML 12,[4.0] ;2 ;IF(RY.LT.4)GO TO 1
36300 CAML 12,[7.0] ;IF(RY.GE.7)GO TO 1
36400 JRST UPDN1 ; NO WIGGLE ON TRILL
36500 CAME 12,[4.0] ;IF(RY.NE.4.)GO TO 12
36600 JRST UPDN12
36700 MOVE XRN+4(11) ;IF(RN(L+5).EQ.50)GO TO 1
36800 CAMN [50.0] ;AC0 IS RN(L+5)
36900 JRST UPDN1 ; CRESC. OR BOX
37000 UPDN12: JSA 16,OUTLIM ;12 ;IF(OUTLIM(L,6))GO TO 1
37100 JUMP PTR(7)
37200 JUMP [6]
37300 JUMPL UPDN1
37400 MOVE 3,.COMM.+=12 ;RN(L+5)=RN(L+5)+R11
37500 FADRM 3,XRN+4(11)
37600 ;; SKIPL POSI+=8 ;IF(JJ2)JJ2=K
37700 MOVE 0,7
37800 AOJ
37900 CAMGE POSI+=8
38000 MOVEM POSI+=8 ;IF(K.LT.JJ2)JJ2=K
38100 ;; JRST UPDN1
38200 ;; MOVE 2,7
38300 ;; AOJ 2,
38400 ;; MOVEM 2,POSI+=8
38500 UPDN1: CAMGE 7,15 ;1 ;CONTINUE
38600 AOJA 7,UPDN0
38700 JRA 16,1(16) ;END
38800
38900 ;SUBROUTINE DELETE
39000 ;IMPLICIT INTEGER(A-Q,S-Z)
39100 ;COMMON/DL/X22,SAVER,NAME
39200 ;COMMON /XRN/RN(4000)
39300 ;COMMON R2,JA,CENTR,J2,RJQ(20),JQ(15),R6,DEL,X,JY,K
39400 ;COMMON/PTR/PWDS(250),ITEM,L,I,IX
39500 ;COMMON/DPY/ST(4000),WDS(250),MEDIT,IGO
39600 DELETE: 0 ;EQUIVALENCE (ST2,ST(2))
39700 MOVE 15,PTR+=252
39800 MOVEM 15,PTR+=253
39900 MOVE 12,DPY+=4250 ;171 IX=I 15 IS IX
40000 MOVE 14,XRN-1(12) ;L=RN(MEDIT)+3.0
40100 FADR 14,[3.0]
40200 FIXX(14) ;AC14 IS L
40300 ; SIZE OF DELETION
40400 SUB 15,14 ;I=IX-L
40500 MOVEM 15,PTR+=252
40600 JSA 16,LOOP ;CALL LOOP(MEDIT,I,1,0,L,RN)
40700 JUMP DPY+=4250
40800 JUMP PTR+=252
40900 JUMP [1]
41000 JUMP [0]
41100 JUMP 14
41200 JUMP XRN
41300 MOVE 7,DL ;JY=WDS(X22+1)-WDS(X22)
41400 MOVE 13,DPY+=4000(7)
41500 SUB 13,DPY+=3999(7) ;JY IS 13, X22 IS 7
41600 MOVEI 10,2
41700 ADD 10,DPY+=3999(7) ;WDS(X22)+2
41800 MOVE 15,PTR+=250 ;15 IS ITEM (X)
41900 JSA 16,LOOP ;CALL LOOP(WDS(X22)+2,WDS(X),1,0,JY,ST)
42000 JUMP 10
42100 JUMP DPY+=3999(15)
42200 JUMP [1]
42300 JUMP [0]
42400 JUMP 13
42500 JUMP DPY
42600 MOVE 12,7 ;K=X22
42700 DELE: MOVE 11,12 ;194 N=K+1
42800 AOJ 11, ;N IS 11 K IS 12
42900 MOVE 2,DPY+=4000(11) ;WDS(N)=WDS(N+1)-JY
43000 SUB 2,13
43100 MOVEM 2,DPY+=3999(11)
43200 MOVE 2,PTR-1(11) ;PWDS(K)=PWDS(N)-L
43300 SUB 2,14
43400 MOVEM 2,PTR-1(12)
43500 MOVE 12,11 ;K=N
43600 CAMGE 12,15 ;IF(K.LT.X)GO TO 194
43700 JRST DELE ; ABOVE RESHUFFLES POINTER ARRAYS. X=ITEM+1
43800 SOS PTR+=250 ;ITEM=ITEM-1
43900 MOVE 2,PTR+=250
44000 CAMLE 7,PTR+=250 ;IF(X22.GT.ITEM)X22=ITEM
44100 MOVEM 2,DL
44200 MOVEM 2,.COMM.+2 ;J2=ITEM
44300 SOS PTR+=250 ;ITEM=ITEM-1
44400 MOVE 2,DPY+=3999(2) ;ST2=WDS(J2)
44500 MOVEM 2,DPY+1
44600 JSA 16,DPYNEW ;271 CALL DPYNEW
44700 JRA 16,(16)
44800
44900 NOIR: 0
45000 JRA 16,1(16) ; DUMMY ******
45100
45200 SLEND: 0 ; SUBROUTINE SLEND
45300 MOVE 8,[8.0] ;INTEGER PWDS
45400 MOVE 7,SCM+=80 ;C TO FIND END POINTS OF STAVES
45500 MOVE 4,[4.0];COMMON/XRN/RN(2000),IT,POS,RA,NN,JB,RB,A,B,JMP,JK,C,
45600 ; 1 DMAX,UMAX,AA,JMAX,X,Y,BB,RNX(1982)
45700 ; 1/SCM/V(78),I,LCNT,STAFF,LIST(200),REND/PTR/PWDS(250),ITEM,LL,IS,IX
45800 SETZ 5, ;DO 1 K=1,ITEM
45900 SLN1: MOVE 6,PTR(5) ;L=PWDS(K)
46000 ;IF(RN(L+1).NE.8)GO TO 1
46100 CAME 8,XRN(6) ;C FOUND A STAFF
46200 JRST SLN1X ;IF(RN(L+2).NE.STAFF)GO TO 1
46300 CAME 7,XRN+1(6) ;C GOT THE RIGHT ONE
46400 JRST SLN1X ;IF(IT)GO TO 2
46500 SKIPGE XRN+=2000 ;POS=202
46600 JRST SLN2 ;C NOW CHECK LEFT SIDE OF STAFF
46700 MOVE 15,[202.0] ;IF(RN(L).LT.4)RETURN
46800 CAML 4,XRN-1(6) ;P6 WASN'T MENTIONED - SO IT =200
46900 JRST SLN3
47000 ;POS=RN(L+6)+2
47100 MOVE 15,XRN+5(6) ;IF(POS.EQ.2)POS=202
47200 FADR 15,[2.0] ;RETURN
47300 CAMN 15,[2.0] ;2 POS=RN(L+3)-2.3
47400 MOVE 15,[202.0] ;RETURN
47500 JRST SLN3 ;1 CONTINUE
47600 SLN2: MOVE 15,XRN+2(6) ;END
47700 FSBR 15,[2.3]
47800 SLN3: MOVEM 15,XRN+=2001
47900 JRA 16,(16)
48000 SLN1X: AOS 5
48100 CAMGE 5,PTR+=250
48200 JRST SLN1
48300 JRA 16,(16)
48400
48500 POSIT: 0 ; FUNCTION POSIT(V)
48600 MOVE 15,@(16) ; COMMON/XRN/RN(4000)
48700 SKIPGE 15 ; DIMENSION POSNT(0/82)
48800 MOVNS 15 ; EQUIVALENCE (POSNT,RN(3801))
48900 MOVE 14,15 ; 1,(A,RN(3884)),(K,RN(3885))
49000 FIXX(14) ; IF(V)V=-V
49100 ; REREAD OR SOMETHING MAKES /1 C- 2/ GIVE A -2 FOR LAST NUM.!!!???
49200 JSA 16,AMOD ; K=V
49300 JUMP 15 ; A=POSNT(K)
49400 JUMP [1.0] ;POSIT=A+(POSNT(K+1)-A)*AMOD(V,1.0)
49500 ; TYPE /2.3 -- FOR POSITION BETWEEN NTS 2 AND 3. ETC.
49600 MOVE 2,XRN+=3801(14) ; END
49700 FSBR 2,XRN+=3800(14)
49800 FMPR 0,2
49900 FADR 0,XRN+=3800(14)
50000 JRA 16,1(16)
50100 END